StateMachine

fun <S, T : Any> StateMachine(initialState: S, vararg transitionRules: TransitionDef<S, out T>)
fun <S, T : Any> StateMachine(initialState: S, transitions: List<TransitionDef<S, out T>>)